package river_city_ransom.services;

import exceptions.ComposantError;


public interface Equipable {
	/** _________________________________________________________ OBSERVATORS */
	public Dimensions dimensions();
	public boolean estEquipable();
	public boolean estPorte();
	public int estJete();
	public Position position();
	
	/** __________________________________________________________ INVARIANTS */
//	inv -1 <= estJete(E) <= 1
	
	/** ___________________________________________________________ OPERATORS */
//	pre etreRamasse(E) require estEquipable(E) ^ !estPorte(E)
//	post estPorte(etreRamasse(E)) = true
//	post estJete(etreRamasse(E)) = 0
//	post position(etreRamasse(E)) = position(E)
	public void etreRamasse() throws ComposantError;

//	pre etreJete(E) require estPorte(E)
//	post estPorte(etreJete(E, d)) = false
//	post estJete(etreJete(E, d)) = { 1 si d
//								   { -1 sinon
//	post position(etreJete(E, d)) = position(E)
	public void etreJete(boolean d) throws ComposantError;

}
